// 对象属性简写在现代开发中极为常见，但在有些高度抽象的场景下，会因为思维不清晰而混淆.
// 为了强调场景，本文使用ts

let prop = 'aaa'

function showParams(val: string) {
    console.log(val);
}

interface config {
    // 通过字符串索引签名为接口添加任意数量的额外属性
    [key: string]: any
}

interface valConfig extends config {
    val?: string
}
let configs: valConfig[]
function showObj(val: valConfig) {
    console.log(val);
}

// 函数参数
showParams(prop)

// 错误写法
configs.push({ prop })

// 正确
configs.push({ val: prop })